Primary Key এবং Foreign Key হল ডেটাবেসে টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন এবং ডেটার অখণ্ডতা নিশ্চিত করতে ব্যবহৃত দুটি গুরুত্বপূর্ণ কনসেপ্ট।
১. Primary Key
Primary Key হল একটি কলাম বা কলামের সমষ্টি (composite key) যা টেবিলের প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করে। এটি একটি টেবিলের মধ্যে ডুপ্লিকেট রেকর্ডের উপস্থিতি রোধ করে এবং প্রতিটি রেকর্ডের জন্য একক (unique) পরিচয় প্রদান করে। প্রতিটি টেবিলের জন্য একটি মাত্র Primary Key থাকতে পারে, এবং এটি কখনো NULL হতে পারে না।
বৈশিষ্ট্য:
- Unqiueness: Primary key-এর মাধ্যমে প্রতিটি রেকর্ডে ইউনিক (unique) মান থাকবে।
- Not NULL: Primary key কখনোই NULL হতে পারে না।
- One per table: প্রতিটি টেবিলের জন্য একটি মাত্র primary key থাকতে পারে।
উদাহরণ:
ধরা যাক, আমরা একটি employees টেবিল তৈরি করছি, যেখানে প্রতিটি কর্মচারীর একটি ইউনিক employee_id থাকবে।
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
name TEXT,
position TEXT,
salary REAL
);
এখানে, employee_id কলামটি Primary Key হিসেবে চিহ্নিত করা হয়েছে, যা প্রতিটি কর্মচারীকে ইউনিকভাবে চিহ্নিত করবে।
২. Foreign Key
Foreign Key হল এমন একটি কলাম বা কলামের সমষ্টি যা অন্য টেবিলের Primary Key অথবা অন্য কোনো ইউনিক কলামকে রেফার করে। Foreign Key এর মূল উদ্দেশ্য হল টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন করা এবং ডেটার অখণ্ডতা (data integrity) নিশ্চিত করা। যখন একটি টেবিলের কলাম অন্য টেবিলের Primary Key বা Unique Key রেফার করে, তখন সেটি Foreign Key হিসেবে কাজ করে।
বৈশিষ্ট্য:
- Relationship: Foreign Key টেবিলগুলোর মধ্যে সম্পর্ক তৈরি করে।
- Data Integrity: Foreign Key ডেটাবেসের মধ্যে সম্পর্ক এবং ডেটার অখণ্ডতা নিশ্চিত করতে সাহায্য করে।
- Cascading: Foreign Key এর মাধ্যমে ডেটা মুছে ফেলার বা আপডেট করার সময়ে cascade অপশন ব্যবহার করা যায়, যা সম্পর্কিত রেকর্ডগুলোও আপডেট বা মুছে দেয়।
উদাহরণ:
ধরা যাক, আমাদের দুটি টেবিল রয়েছে: employees এবং departments। এখানে, employees টেবিলে department_id কলামটি departments টেবিলের id (Primary Key) কে রেফার করবে।
CREATE TABLE departments (
id INTEGER PRIMARY KEY,
department_name TEXT
);
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
name TEXT,
position TEXT,
department_id INTEGER,
FOREIGN KEY (department_id) REFERENCES departments(id)
);
এখানে, employees টেবিলের department_id কলামটি departments টেবিলের id কলামকে রেফার করছে, এবং department_id একটি Foreign Key হিসেবে ব্যবহৃত হচ্ছে।
৩. Primary Key এবং Foreign Key এর সম্পর্ক
- Primary Key এবং Foreign Key ডেটাবেসের মধ্যে সম্পর্ক স্থাপন করে, যেখানে Primary Key একটি টেবিলের প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করে এবং Foreign Key অন্য টেবিলের Primary Key রেফার করে সম্পর্ক তৈরি করে।
- Data Integrity: Foreign Key ডেটার অখণ্ডতা রক্ষা করতে সাহায্য করে, কারণ এটি নিশ্চিত করে যে শুধু বৈধ মানগুলো (যেগুলি অন্য টেবিলের Primary Key এর সাথে মেলে) সংরক্ষিত হবে।
৪. Cascading (Delete, Update)
Cascading হল একটি সুবিধা যা Foreign Key ব্যবহার করার সময়ে প্রয়োগ করা যায়। এটি একটি টেবিলের রেকর্ড মুছে ফেলার বা আপডেট করার সময় সম্পর্কিত টেবিলের রেকর্ডগুলোও মুছে বা আপডেট করতে সাহায্য করে।
উদাহরণ:
যদি আপনি departments টেবিলের কোনো রেকর্ড মুছে ফেলেন, এবং আপনার employees টেবিলের সেই বিভাগের কর্মচারীদের ডেটা মুছে ফেলতে চান, তাহলে ON DELETE CASCADE ব্যবহার করতে পারেন।
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
name TEXT,
position TEXT,
department_id INTEGER,
FOREIGN KEY (department_id) REFERENCES departments(id) ON DELETE CASCADE
);
এটি নিশ্চিত করবে যে, যখন departments টেবিলের কোনো বিভাগের রেকর্ড মুছে ফেলা হবে, তখন সেই বিভাগের সকল কর্মচারীর ডেটাও মুছে যাবে।
সারাংশ
- Primary Key: একটি কলাম যা প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করে এবং কখনোই
NULLহতে পারে না। - Foreign Key: এটি একটি কলাম বা কলামের সমষ্টি যা অন্য টেবিলের Primary Key বা Unique Key রেফার করে এবং টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন করে।
- Data Integrity: Foreign Key ডেটার অখণ্ডতা নিশ্চিত করতে সাহায্য করে এবং Cascading অপশন দিয়ে ডেটা আপডেট বা মুছে ফেলার সময় সম্পর্কিত টেবিলের রেকর্ডও আপডেট বা মুছে দেওয়া সম্ভব হয়।
Read more